package cn.zhaoguang.usedcar.main.mapper;

import cn.zhaoguang.usedcar.main.common.BaseTkMapper;
import cn.zhaoguang.usedcar.main.entity.Usedcar;
import cn.zhaoguang.usedcar.main.entity.dto.SellerInfoAndUsedcarDTO;
import cn.zhaoguang.usedcar.main.entity.dto.UsedcarDetailDTO;
import cn.zhaoguang.usedcar.main.entity.dto.UsedcarForManagerDTO;
import org.apache.ibatis.annotations.Param;

import java.util.Date;
import java.util.List;

public interface UsedcarMapper extends BaseTkMapper<Usedcar> {

    /**
     * @Description 添加车辆(取消使用此方法)
     * @Author zhaoguang
     */
    int add(Usedcar usedCar);

    /**
     * @Description 商家接口-查询本店铺全部车辆
     * @Author zhaoguang
     */
    List<Usedcar> findAllBySellerId(@Param("sellerId") Integer sellerId, @Param("searchName") String searchName);

    /**
     * @Description 用户、商家接口-查询车辆详情和店铺信息
     * @Author zhaoguang
     */
    UsedcarDetailDTO findDetailById(@Param("id") Integer id);

    /**
     * @Description 用户接口-查询全部车辆
     * @Author zhaoguang
     */
    List<Usedcar> findAll(@Param("searchName") String searchName);

    /**
     * @Description 用户接口-搜索、筛选车辆
     * @Author zhaoguang
     */
    List<Usedcar> choiceCar(@Param("value") String value, @Param("sort") String sort);

    /**
     * @Description 用户接口-搜索、筛选车辆(筛选车辆价格)
     * @Author zhaoguang
     */
    List<Usedcar> choiceCarByPrice(@Param("value1") Integer value1, @Param("value2") Integer value2);

    /**
     * @Description 用户接口-搜索、筛选车辆(筛选车辆类型)
     * @Author zhaoguang
     */
    List<Usedcar> choiceCarByType(@Param("value") String value);

    /**
     * @Description 获取今日添加的最新车辆
     * @Author zhaoguang
     */
    List<Usedcar> findToday(@Param("beginOfDay") Date beginOfDay, @Param("endOfDay") Date endOfDay);

    /**
     * @Description 用户接口-查询某个商家的信息和车辆(用户进入某个店铺时使用的API)
     * @Author zhaoguang
     */
    SellerInfoAndUsedcarDTO findSellerInfoAndUsedcarByIdForUser(@Param("sellerId") Integer sellerId);

    /**
     * @Description 用户接口-查询今日添加的最新车辆
     * @Author zhaoguang
     */
    List<Usedcar> findTodayUsedcar(@Param("beginOfDay") Date beginOfDay, @Param("endOfDay") Date endOfDay);




    /**
     * @Description 管理员接口-查询全部车辆(与用户接口的查询全部车辆不同)
     * @Author zhaoguang
     */
    List<UsedcarForManagerDTO> findAllForManager(@Param("searchName") String searchName);
}